home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue39 / ComCorn / ServAuto.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-10-06  |  1.8 KB  |  66 lines

  1. unit ServAuto;
  2.  
  3. interface
  4.  
  5. uses
  6.   ComObj, ActiveX, AxCtrls, Server_TLB;
  7.  
  8. type
  9.   TServerWithEvents = class(TAutoObject, IConnectionPointContainer, IServerWithEvents)
  10.   private
  11.     { Private declarations }
  12.     FConnectionPoints: TConnectionPoints;
  13.     FEvents: IServerWithEventsEvents;
  14.     procedure MemoChange(Sender: TObject);
  15.   public
  16.     procedure Initialize; override;
  17.   protected
  18.     { Protected declarations }
  19.     property ConnectionPoints: TConnectionPoints read FConnectionPoints
  20.       implements IConnectionPointContainer;
  21.     procedure EventSinkChanged(const EventSink: IUnknown); override;
  22.     procedure Clear; safecall;
  23.     procedure AddText(const NewText: WideString); safecall;
  24.   end;
  25.  
  26. implementation
  27.  
  28. uses ComServ, ServMain, SysUtils, StdCtrls;
  29.  
  30. procedure TServerWithEvents.EventSinkChanged(const EventSink: IUnknown);
  31. begin
  32.   FEvents := EventSink as IServerWithEventsEvents;
  33. end;
  34.  
  35. procedure TServerWithEvents.Initialize;
  36. begin
  37.   inherited Initialize;
  38.   FConnectionPoints := TConnectionPoints.Create(Self);
  39.   if AutoFactory.EventTypeInfo <> nil then
  40.     FConnectionPoints.CreateConnectionPoint(AutoFactory.EventIID,
  41.       ckSingle, EventConnect);
  42.   // Route main form memo's OnChange event to MemoChange method:
  43.   MainForm.Memo.OnChange := MemoChange;
  44. end;
  45.  
  46. procedure TServerWithEvents.Clear;
  47. begin
  48.   MainForm.Memo.Lines.Clear;
  49.   if FEvents <> nil then FEvents.OnClear;
  50. end;
  51.  
  52. procedure TServerWithEvents.AddText(const NewText: WideString);
  53. begin
  54.   MainForm.Memo.Lines.Add(NewText);
  55. end;
  56.  
  57. procedure TServerWithEvents.MemoChange(Sender: TObject);
  58. begin
  59.   if FEvents <> nil then FEvents.OnTextChanged((Sender as TMemo).Text);
  60. end;
  61.  
  62. initialization
  63.   TAutoObjectFactory.Create(ComServer, TServerWithEvents,
  64.     Class_ServerWithEvents, ciMultiInstance, tmApartment);
  65. end.
  66.